namespace DotConferenceSql
{
    /// <summary>
    /// QueryElementType is the type
    /// of element that a QueryElementBase can be.
    /// It is used to generate the correct SQL clause.
    /// </summary>
    /// <remarks>
    /// The order of the enum is important for CompositeQueryElement
    /// to generate a valid query.
    /// </remarks>
    public enum QueryElementType
    {
        /// <summary>
        /// The element is a SELECT clause
        /// </summary>
        SelectClause,
        /// <summary>
        /// The element is a INSERT INTO clause
        /// </summary>
        InsertIntoClause,
        /// <summary>
        /// The element is a UPDATE clause
        /// </summary>
        UpdateClause,
        /// <summary>
        /// The element is a DELETE clause
        /// </summary>
        DeleteClause,
        /// <summary>
        /// The element is a FROM clause
        /// </summary>
        FromClause,
        /// <summary>
        /// The element is a INNER JOIN clause
        /// </summary>
        InnerJoinClause,
        /// <summary>
        /// The element is a WHERE clause
        /// </summary>
        WhereClause,
        /// <summary>
        /// The element is a GROUP BY clause
        /// </summary>
        GroupByClause,
        /// <summary>
        /// The element is a GROUP BY clause
        /// </summary>
        OrderByClause,
        /// <summary>
        /// Other
        /// </summary>
        Other
    }
}